//Variable globale du matériel sélectionné
var idDevice = "9999";

function setSelectedDevice(idMateriel){
	idDevice = idMateriel;
	return idDevice;
}


function infosMateriel(){
    window.openDialog('chrome://reserveit/content/reserve/infos_device.xul','_blank','chrome,centerscreen,modal');
}

//fonction permettant de récupérer la liste des matériels présents en base de données
function getListDevices(){
    //Requete pour la récupération des matériels
    var requeteSql = "SELECT idDevice, name FROM device ORDER BY name";
    //exécution de la requete et récupération des données
    var statement = executeReqSql(requeteSql);
    //affichage des données
    var menuPopupDevice = document.getElementById("menuPopupDeviceComboBox");
    var menuItem;
    while(statement.step()){
        menuItem = document.createElement("menuitem");
        menuItem.setAttribute("label", statement.row.name);
        menuItem.setAttribute("value", statement.row.idDevice);
        menuPopupDevice.appendChild(menuItem);
    }
}

//MPA : fonction permettant de récupérer la liste des matériels présents en base de données surchargeant la création d'event
function getListDevicesAddEvent(){
    //Requete pour la récupération des matériels
    var requeteSql = "SELECT idDevice, name FROM device ORDER BY name";
    //exécution de la requete et récupération des données
    var statement = executeReqSql(requeteSql);
    //affichage des données
    //var menuPopupDevice = document.getElementById("event-grid-select-device-list-popup");
    var menuPopupDevice = document.getElementById("event-grid-select-device-box");
    var menuItem;
    while(statement.step()){
        menuItem = document.createElement("listitem");
    	//menuItem = document.createElement("menuitem");
        menuItem.setAttribute("label", statement.row.name);
        menuItem.setAttribute("value", statement.row.idDevice);
        //menuItem.setAttribute("type", "checkbox");
        menuPopupDevice.appendChild(menuItem);
    }
}

function getInfosDevice(idDevice){
    //Requete pour la récupération des salles
    var requeteSql = "SELECT * FROM device WHERE idDevice="+idDevice;
    //exécution de la requete et récupération des données
    var statement = executeReqSql(requeteSql);
    //affichage des données
    while(statement.step()){
        document.getElementById("nomMateriel").value = statement.row.name;
        document.getElementById("typeMateriel").value = statement.row.type;
    }    
}

function addDeviceOpenWindow(){
	window.openDialog('chrome://reserveit/content/reserve/add_device.xul','_blank','chrome,centerscreen,modal');
}

function editDeviceOpenWindow(){
        if (document.getElementById("deviceComboBox").value!="#") {
            window.openDialog('chrome://reserveit/content/reserve/edit_device.xul','_blank','chrome,centerscreen,modal',idDevice);
        }else{
            alert("Veuillez sélectionner un matériel")
        }
}

function addDevice(){
		
	//Récupération des champs
	var nDevice = document.getElementById("nomMateriel").value; 
	var tDevice = document.getElementById("typeMaterielComboBox").value;
	
	//test si le formulaire est valide
	if(validateFormAddDevice(nDevice, tDevice)){
		
		if (confirm("Voulez-vous ajouter ce matériel ?"))
		{
			//Requete pour la récupération des salles
			var requeteSql = "INSERT INTO device ('name','type') VALUES (:nDevice,:tDevice)";
	
			//Exécution de la requete et récupération des données
			var arraySql = insertReqSql(requeteSql);
			var db = arraySql[0];
			var statement = arraySql[1];
		    
			statement.initialize(db.createStatement(requeteSql));
			
			statement.params.nDevice = nDevice;
			statement.params.tDevice = tDevice;
			statement.step();
			
			alert("Matériel ajouté avec succès");
			window.opener.location="chrome://reserveit/content/admin/interface_admin.xul";
			window.close();

		}
		else
		{
			alert("Matériel non ajouté");
		}
	}
}

function editDevice(idDevice){
	
	//Récupération des champs
	var nDevice = document.getElementById("nomMateriel").value; 
	var tDevice = document.getElementById("typeMateriel").value;
        
	//test si le formulaire est valide
	if(validateFormAddDevice(nDevice, tDevice))
	{
		if (confirm("Voulez-vous modifier ce matériel ?"))
		{	
			//recuperation des lignes de réservation
		    var requeteSql = "SELECT * FROM reservation WHERE idDevice="+idDevice;
		    var tmp = 0;
		    var tmp2 = 0;
		    //exécution de la requete et récupération des données
		    var statement = executeReqSql(requeteSql);
		    //récupération des données
		    while(statement.step()){
		    	tmp = tmp + 1;
	        	var dateReturnTS = statement.row.dateReturn  / 1000;
	        	var today = new Date().getTime();
		    	if(dateReturnTS < today){
		    		tmp2 = tmp2 + 1;
		    	}
		    }
	    	//test si tous les matériels ont des réservations dépassées
	    	if(tmp == tmp2){
	    		//suppression des reservations
	    		var requeteSql = "DELETE FROM reservation WHERE idDevice="+idDevice;
				
				var arraySql = insertReqSql(requeteSql);
		    	var db = arraySql[0];
		    	var statement = arraySql[1];
		
				statement.initialize(db.createStatement(requeteSql));
				statement.step();
				
				//update du matériel
				var requeteSql = "UPDATE device SET 'name'=:nDevice,'type'=:tDevice WHERE idDevice="+idDevice;
				var arraySql = insertReqSql(requeteSql);
				var db = arraySql[0];
				var statement = arraySql[1];
				
				statement.initialize(db.createStatement(requeteSql));
		    	
				statement.params.tDevice = tDevice;
				statement.params.nDevice = nDevice;

				statement.step();
				
				alert("Matériel modifié avec succès");
				window.opener.location="chrome://reserveit/content/admin/interface_admin.xul";
				window.close();
	    	}
	    	else{
	    		alert("Matériel non modifié car demandé pour une réunion qui n'a pas encore eu lieu !!!");
	    	}
		}
		else
		{
		    alert("Matériel non modifié");
		}
	}
}

function deleteDevice(idDevice){
    
     if (document.getElementById("deviceComboBox").value!="#") {
           
		if (confirm("Voulez-vous supprimer ce matériel ?"))
		{	
				//recuperation des lignes de réservation
			    var requeteSql = "SELECT * FROM reservation WHERE idDevice="+idDevice;
			    var tmp = 0;
			    var tmp2 = 0;
			    //exécution de la requete et récupération des données
			    var statement = executeReqSql(requeteSql);
			    //récupération des données
			    while(statement.step()){
			    	tmp = tmp + 1;
		        	var dateReturnTS = statement.row.dateReturn  / 1000;
		        	var today = new Date().getTime();
			    	if(dateReturnTS < today){
			    		tmp2 = tmp2 + 1;
			    	}
			    }
		    	//test si tous les matériels ont des réservations dépassées
		    	if(tmp == tmp2){
		    		//suppression des reservations
		    		var requeteSql = "DELETE FROM reservation WHERE idDevice="+idDevice;
					
					var arraySql = insertReqSql(requeteSql);
			    	var db = arraySql[0];
			    	var statement = arraySql[1];
			
					statement.initialize(db.createStatement(requeteSql));
					statement.step();
					
					//suppression du matériel
					var requeteSql = "DELETE FROM device WHERE idDevice="+idDevice;
					
					var arraySql = insertReqSql(requeteSql);
			    	var db = arraySql[0];
			    	var statement = arraySql[1];
			
					statement.initialize(db.createStatement(requeteSql));
					statement.step();
					
					alert("Matériel supprimé avec succès");
					
					//reset de la combobox
					resetComboBox(document.getElementById("menuPopupDeviceComboBox"), "Sélectionnez un matériel");
					//chargement des matériels
					getListDevices();
					//reset des champs infos
					document.getElementById("deviceComboBox").value = "#";
					document.getElementById("nomMateriel").value = "";
					document.getElementById("typeMateriel").value = "";
		    	}
		    	else{
		    		alert("Matériel non supprimé car demandé pour une réunion qui n'a pas encore eu lieu !!!");
		    	}
			}   
		else
		{
			alert("Matériel non supprimé");
		}
        
       }else{
            alert("Veuillez sélectionner un matériel")
        }
}

/*
 * MPA : Fonction ouvrant le planning des matériels pour en voir leur disponiblé
 */ 
function openPlanningDevices(){
	window.openDialog('chrome://reserveit/content/reserve/planning_device.xul','_blank','chrome,centerscreen,modal');
}
 
/*
 * MPA : fonction de remplissage du planning
 */ 
function fillPlanningDevices(){
    var requeteSql = "SELECT idDevice, name FROM device ORDER BY name";
    var statement = executeReqSql(requeteSql);
    var hboxListDevices = document.getElementById("hbox-list-devices");
   
    while(statement.step()){
        var hboxDevices = document.createElement("hbox");
    	var labelDevices = document.createElement("label");
        labelDevices.setAttribute("value", statement.row.name);
        
        var idDeviceSelected = statement.row.idDevice;
        var requeteSqlReservation = "SELECT distinct idEvent, dateReservation, dateReturn FROM reservation WHERE idDevice="+idDeviceSelected;
        var statementReservation = executeReqSql(requeteSqlReservation);
        
        hboxDevices.appendChild(labelDevices);
                  
        while(statementReservation.step()){
        	var labelReservation = document.createElement("label");		
                	
        	var dateBeginTS = statementReservation.row.dateReservation;
        	var dateReturnTS = statementReservation.row.dateReturn;
        	dateBeginTS = dateBeginTS/1000000;
        	var dateBeginOK = showLocalDate(dateBeginTS);
        	
        	dateReturnTS = dateReturnTS/1000000;
        	var dateReturnOK = showLocalDate(dateReturnTS);
		
        	var dateBooked = dateBeginOK+" au "+dateReturnOK;
        	labelReservation.setAttribute("value", dateBooked);
        	//labelReservation.setAttribute("id", statementReservation.row.idReservation);
        	hboxDevices.appendChild(labelReservation);
        } 
        
        hboxListDevices.appendChild(hboxDevices);
    
    }
}

